<?php

/*
 * Copyleft 2015 The TFT
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 */

class ControleurUser {

    public function afficherAdm() {
        VariablesGlobales::$lesUsers = ModeleUser::getMembres();
        include Chemins::VUES . "v_afficherUserAdm.php";
    }

    public function ajouter() {
//Si l'utilisateur a envoyé le formulaire 
//alors on traite
        if (isset($_POST['valider'])) {
//Récupération des données
            extract($_POST);
            if ($passe == $passeCheck) {
                ModeleUser::ajouterMembre($login, $passe);
                header("Location:index.php?controleur=User&action=afficherAdm");
            } else
                $message = "Erreur, les mots de passes ne concordent pas !";
        } else
            include Chemins::VUES . 'v_ajouterMembre.php';
    }

    public function modifier() {
        $id = $_GET['id'];

//Si l'user a envoyé le formulaire
        if (isset($_POST['valider'])) {
            $login = $_POST['login'];
            $passe = $_POST['password'];
            $rang = $_POST['rang'];

//Appel de la méthode de modification
            ModeleUser::modifierMembre($id, $login, $passe, $rang);

            header("Location:index.php?controleur=User&action=afficherAdm");
        } else {
            VariablesGlobales::$unUser = ModeleUser::getMembreById($id);
            include Chemins::VUES . "v_modifierMembre.php";
        }
    }

    /*
     * Permet de modifier un utilisateur
     */

    public function modifierUser() {
        /*
         * On vérifie qu'il y a bien un id en paramètres
         * puis on affiche le formulaire de modification
         * et enfin on vérifie que l'utilisateur a bien envoyé
         * le formulaire et en renvoit sur la page de profil
         */

        if (isset($_REQUEST['valider'])) {
            extract($_POST);
            ModeleUser::modifierMembre($id, $login, $password, $rang);
            session_destroy();
            session_start();
            header('Location:index.php?controleur=User&action=voirProfil');
        } else {
            $id = $_GET['id'];
            VariablesGlobales::$unUser = ModeleUser::getMembreById($id);
            require VUES . "v_userModifier.php";
        }
    }

    public function supprimer() {
        $id = $_REQUEST['id'];
        ModeleUser::supprimerMembre($id);
        header("Location:index.php?controleur=User&action=afficherAdm");
    }

    public function connexion() {
        /*
         * On va commencer par vérifier si 
         * l'utilisateur a bien envoyé le formulaire
         * si c'est le cas on compte le nombre d'occurrence
         * puis on crée des sessions et on renvoi une vue
         */
        if (isset($_POST['valider'])) {
            extract($_POST);
            $nbRow = ModeleUser::getNbMembre($login, $password);
            if ($nbRow > 0) {
                VariablesGlobales::$unUser = ModelePDO::select("*", "membre", "login = '" . $login . "';");
                $_SESSION['login'] = VariablesGlobales::$unUser->login;
                $_SESSION['rang'] = VariablesGlobales::$unUser->rang;
                $_SESSION['dateInscription'] = VariablesGlobales::$unUser->dateInscription;
                $_SESSION['password'] = VariablesGlobales::$unUser->password;
                $_SESSION['id'] = VariablesGlobales::$unUser->id;
                header('Location:index.php?controleur=User&action=voirProfil');
            } else {
                VariablesGlobales::$message = "<p class='text-danger'>Une erreur est survenue !<br />Veuillez vérifier le couple login/mot de passe.</p>";
                include Chemins::VUES . "v_connexion.php";
            }
        } else {
            include Chemins::VUES . "v_connexion.php";
        }
    }

    public function inscription() {
        if (isset($_POST['valider'])) {
            extract($_POST);
            if (!empty($login) && !empty($password) && !empty($passwordVerif)) {
                $loginVerifExistant = ModeleUser::getNbLogin($login);
                if ($loginVerifExistant > 0) {
                    VariablesGlobales::$message = "Ce login est déjà pris !";
                    require VUES . "v_inscription.php";
                } else {
                    if ($password == $passwordVerif) {
                        $dateInscription = ModeleUser::getDate();
                        ModeleUser::ajouterMembre($login, $password, $dateInscription);
                        echo "<p class='text-success'>Félicitations, vous êtes à présent inscrit ! <br />Vous allez être redirigé sur la
                        page de connexion...</p>";
                        header("Refresh: 4;URL=?controleur=User&action=connexion");
                    } else {
                        VariablesGlobales::$message = "Les mots de passes ne concordent pas !";
                        require VUES . "v_inscription.php";
                    }
                }
            } else {
                VariablesGlobales::$message = "Vous n'avez pas rempli tous les champs !";
                require VUES . "v_inscription.php";
            }
        } else {
            require VUES . "v_inscription.php";
        }
    }
    
    public function oubliePasse() {
        if(isset($_POST['valider'])) {
            $mail = $_REQUEST['mail'];
            $passe = ModeleUser::getPasseByMail($mail);
            $message = "Bonjour, "
                    . "Voici votre mot de passe : " . $passe;
            mail($mail, 'Oublie de mot de passe', $message);
            
            echo "<center>Votre mot de passe vient d'être envoyé. Veuillez consulter votre boîte mail.</center>";
        } else
            require VUES . 'v_oubliePasse.php';
    }

    public function voirProfil() {
        include (VUES . "v_profil.php");
    }

    public function deconnexion() {
        $_SESSION = array();
        session_destroy();
        header('Location:index.php');
    }

}
